package com.duanjw.springframework.beanpostprocessor;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

import java.lang.ref.Reference;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class TestAutowireMode implements ImportBeanDefinitionRegistrar {


    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//        for (int i = 0; i < registry.getBeanDefinitionNames().length; i++) {
//            GenericBeanDefinition beanDefinition = (GenericBeanDefinition) registry.getBeanDefinition(registry.getBeanDefinitionNames()[i]);
//            beanDefinition.setAutowireMode(2);
//        }
        GenericBeanDefinition beanDefinition = (GenericBeanDefinition) registry.getBeanDefinition("userServiceImpl");
        beanDefinition.setAutowireMode(2);

    }

    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException {
        List<String> list = new ArrayList<>();
//        Method add = list.getClass().getDeclaredMethod("add",Object.class);
//        add.invoke(list,"张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
        list.add("张");
//        Method get = list.getClass().getDeclaredMethod("get", int.class);
//        Object invoke = get.invoke(list, 0);
//        System.out.println("List<Integer>数组中的值："+invoke);
    }
}